Performance of data flow between an application server and a database server is largely dependent on the scope and number of queries generated by the application server. Complex calculations can involve numerous queries of the database server which in turn can consume significant resources in connection with data transport as well as application server-side processing of transported data.
Complex queries of data sources can often be executed in several, if not many, different ways. In order to effect such queries in an efficient manner, data flow graphs for such queries can be optimized for a more rapid response time and/or to consume fewer processing resources. In the process of optimization, filters (e.g., WHERE statements, etc.) are typically pushed down nodes of the data flow graph as deep as possible. However, pushing a down a filter over a calculated attribute can be prohibitive because the corresponding logic defining the calculation needs to be reversed. Even if this logic is bidirectional, an automated reverse transformation can be complex. This problem is of major importance for enterprise software with integrated reporting respectively reporting on transactional data in which data cleansing, transformation and enrichment are done dynamically by means such as calculated attributes.